export interface TableColumn {
  key: string
  title: string
  width?: string
  minWidth?: string
  maxWidth?: string
  sortable?: boolean // TODO 未实现排序
  render?: (value: any, row: any) => string
  searchFn?: (value: any, row: any, keyword: string) => boolean
}

export interface TableData {
  [key: string]: any
}

export interface TableProps {
  /**
   * 表格ID
   */
  id: string
  /**
   * 表格标题
   */
  title?: string
  /**
   * 表格列配置
   */
  columns: TableColumn[]
  /**
   * 表格数据
   */
  data: TableData[]
  /**
   * 是否显示搜索框
   */
  showSearch?: boolean
  /**
   * 是否显示序号列
   */
  showIndex?: boolean
  /**
   * 序号列宽度
   */
  indexWidth?: string
  /**
   * 表格最大高度（超出显示滚动条）
   */
  maxHeight?: string
  /**
   * 是否显示数据量统计
   */
  showDataCount?: boolean
  /**
   * 搜索回调
   */
  onSearch?: (keyword: string, filteredData: TableData[]) => void
}

export const DEFAULT_TABLE_PROPS: Partial<TableProps> = {
  showSearch: true,
  showIndex: true,
  indexWidth: '40px',
  maxHeight: 'auto',
  showDataCount: true,
}
